Parameter set is the basic data structure in video coding standards and contains common information used in the encoding/decoding process, such as flags and common parameter information (for example, Profile, Level, etc.). Generally, the flags and the parameters in parameter sets determine the use of encoding/decoding tools of a codec at any time. Some important algorithms can be viewed as the specific descriptions on the operations led by a certain flag. Therefore, the data structure, the encoding/decoding and the referring method of the parameter set constructs the basic framework and the organization styles of bit-streams of the entire video coding standard.
At present, the High-Efficiency Video Coding (HEVC) standard has three types of parameter sets: Sequence Parameter Set (SPS), Picture Parameter Set (PPS) and Adaptation Parameter Set (APS). The SPS contains the common information used for encoding/decoding the entire input video sequence. The PPS contains the common information used in the process of encoding/decoding one or more pictures. The APS is a data structure containing the common information of the coding tools used in the process of encoding/decoding one or more slices. The encoding/decoding and the referring method of the SPS and the PPS are similar to that in the present standard H.264/AVC (Advanced Video Coding). At the encoder side, the encoding and the referring method of the APS may include the following steps.
Step 1: the encoder determines, according to the SPS and the PPS, coding tools allowed to be used in the process of encoding the current slice.
Step 2: the encoder encodes the current slice, wherein an optimization module of the encoder determines the coding tools and the coding tool parameters used in the process of encoding the slice.
Step 3: the encoder detects whether the coding tool parameters in an existing APS are completely identical to the coding tool parameters used for the current slice; if so, Step 4 is executed; otherwise, Step 5 is executed.
Step 4: the encoder writes the identifier of the existing APS into slice header, and the process of encoding the APS information for the current slice ends.
Step 5: the encoder generates a new APS according to the coding tool parameters used for the current slice and allocates a new identifier to this APS. The encoder writes the identifier of the APS into the slice header, and the process of encoding the APS information for the current slice ends.
Here, the said coding tool may refer to a picture-level coding tool, and a picture-level or slice-level common control module. The picture-level coding tool may include Sample Adaptive Offset (SAO), Adaptive Loop Filter (ALF), Weighted Prediction (WP) and like. The picture-level or slice-level common control module may include Decoded Picture Buffer (DPB) management module, reference picture marking and adjustment module, reference picture list construction module and the like. The coding tool parameter may include: coding tool On/Off flag, necessary parameters of a coding tool for deriving and/or reconstructing one or more pixels, the said parameters may include, for example, the additive offset of each subband for SAO, filter coefficients for ALF, reference picture information for the picture-level or slice-level common control module.
In addition, the encoder may use a different APS for each slice, or use the same APS for all slices in the same picture, or use the same APS for multiple slices (which may not be in the same picture).
At the decoder, the decoding and the referring method of the APS may include the following steps:
Step 1: the decoder parses the binary bit-stream of the slice header, and determines the APS identifier used in the process of decoding the current slice.
Step 2: the decoder parses the bit-stream of the corresponding APS according to the APS identifier obtained through parsing, and determines the coding tools and the associated coding tool parameters used in the process of decoding the current slice.
Step 3: the decoder configures the coding tools according to the APS and uses the configured coding tools to reconstruct pixels in the slice, and the process of decoding the current slice ends.
The drawbacks of the existing method mainly reside in the following four aspects.
First, the encoder cannot make full use of the encoded APS information. The APS contains the parameters of multiple coding tools simultaneously, and only one APS can be referred to in slice header. Therefore, only when the coding tool parameters used for encoding a slice are completely identical to the ones in a certain existing APS, the encoder can use this APS directly, without generating a new APS. Therefore, in the process of encoding a slice, if the coding tool parameters of one coding tool always keep unchanged while the parameters of other coding tools are changed, the encoder must generate new APSs for subsequent slices to be encoded and cannot re-use the coding tool parameters already contained in the existing APS directly.
Second, information redundancy exists in the encoding and referring method of APS. As described above, in the new APS generated, the encoder has to repeatedly encoding the coding tool parameters already existing in a previous APS, which leads to extra coding bits cost.
Third, the encoder cannot flexibly configure the coding tools using APS. Besides the above situations, the encoder cannot implement the flexible configuration of the coding tools by using the method of “respective configuration, and use in combination in the encoding process at slice level” for the allowed coding tools.
Fourth, the method for disabling a coding tool at slice level would cause a relative large bit overhead. For the coding tools allowed to be used in the encoding/decoding process, if one or more coding tools are not used in the actual encoding/decoding process, it has to generate one or more separate parameter sets, each containing a Flag “disabling the coding tool in the encoding/decoding process at slice level” only, and write the identifier of the one or more parameter sets into the slice header. Therefore, to encode the Flag information “disabling the coding tool” (generally, the number of the overhead bits is identical to the number of flags), the encoder has to encode other necessary information in the parameter set structure and the parameter set identifier at slice level, which leads to a relative large coding bit overhead.